package com.code.generator;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;

import freemarker.template.Template;
import freemarker.template.TemplateException;


/**
 * 代码生成器工具类
 *
 *
 * @author 朱国军
 * @version 2015年2月9日 朱国军
 */
public class GeneratorUtils {
    /**
     * 获取注释用的当前时间
     *
     * @return 当前时间
     */
    public static String getCurrentDate() {
        DateTime date = new DateTime(System.currentTimeMillis());
        return date.toString("yyyy年MM月dd日 ");
    }


    /**
     * 执行模版，并将数据写入文件
     *
     * @param filePath 文件写入路径
     * @param temp 模拟
     * @param tableData 需要的数据
     * @throws TemplateException 模版异常
     * @throws IOException IO异常
     */
    public static void witeFile(String filePath, Template temp, Map<String, Object> tableData) throws TemplateException, IOException {
        // 判断文件夹是否存在，如果不存在自动创建文件夹
        String folderPath = filePath.substring(0, filePath.lastIndexOf("/"));
        File file = new File(folderPath);
        if (!file.exists() && !file.isDirectory()) {
            file.mkdirs();
        }
        OutputStream out = new FileOutputStream(filePath, false);
        Writer writer = new OutputStreamWriter(out, "UTF-8");
        temp.process(tableData, writer);
        writer.flush();
        writer.close();
        out.close();
    }
    
    public static String getFilePath(String packagePath){
        String[] paths=StringUtils.split(packagePath, ".");
        String filePath="/";
        for(String path:paths){
            filePath=filePath+path+"/";
        }
        return filePath;
    }
}
